﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

#define MAX 1000
#define reg register          //为 register这个关键字，创建一个简短的名字
#define do_forever for(;;)     //用更形象的符号来替换一种实现
#define CASE break;case        //在写case语句的时候自动把 break写上。
// 如果定义的 stuff过长，可以分成几行写，除了最后一行外，每行的后面都加一个反斜杠(续行符)。
#define DEBUG_PRINT printf("file:%s\tline:%d\t \
                          date:%s\ttime:%s\n" ,\
                          __FILE__,__LINE__ ,\
                          __DATE__,__TIME__ )  

// #define SQUARE( x ) (x) *( x)
//int main()
//{
//    SQUARE(5);
//
//    int a = 5;
//    printf("%d\n", SQUARE(a + 1));
//    return 0;
//}

//#define DOUBLE(x) (x) + (x)

//#define DOUBLE(x)  ( ( x ) + ( x ) )
//int main()
//{
//	int a = 5;
//	printf("%d\n", 10 * DOUBLE(a));
//	//printf("%d\n", 10 * (5) + (5));
//	return 0;
//}
//


//int main()
//{
//	char* p = "hello ""bit\n";
//	printf("hello"" bit\n");
//	printf("%s", p);
//	return 0;
//}
//#define PRINT(FORMAT, VALUE)\
// printf("the value is "FORMAT"\n", VALUE);
//
//int main()
//{
//	//...
//  PRINT("%d", 10);
//}

//int i = 10;
//#define PRINT(FORMAT, VALUE)\
// printf("the value of " #VALUE "is "FORMAT "\n", VALUE);
//int main()
//{
//	//...
//PRINT("%d ", i + 3);
//}

//#define ADD_TO_SUM(sum,value)\
//     sum##num += value;
//#define CAT(x,y) x##y
//int main()
//{
//	//...
//	int sum5 = 5;
//	ADD_TO_SUM(5, 10);//作用是：给sum5加10
//	int Class109 = 2023;
//	printf("%d\n", CAT(Class, 109));
//
//
//	return 0;
//}

//#define MAX(a,b) ((a)>(b)?(a):(b))
//
//int max(int a, int b)
//{
//	return a > b ? a : b;
//}
//int main()
//{
//	int x = 5;
//	int y = 8;
//	//int z = MAX(x++, y++);
//	//替换之后变成 int m = (a++)>(b++)?(a++):(b++);
//	//int m = 5 > 8 ? 6 : 9 
//	//printf("x =%d y = %d z = %d\n", x, y, z); 
//
//	int ret = max(x++, y++);
//	printf("x = %d y = %d max(x,y)=%d\n", x, y, ret);
//
//	return 0;
//}


//#define MALLOC(num, type)\
// (type *)malloc(num * sizeof(type))
//int main()
//{
//	//使用
//	MALLOC(10, int);//类型作为参数
//	//预处理器替换之后：
//	(int*)malloc(10 * sizeof(int));
//}
//


//int main()
//{
//	printf("%s\n", __FILE__);
//	printf("%d\n", __LINE__);
//	printf("%s\n", __DATE__);
//	printf("%s\n", __TIME__);
//	//printf("%s\n", __STDC__);//VS2022不支持
//	printf("%s\n", __FUNCTION__);
//	return 0;
//}
//#define MAX 1000;
//int main()
//{
//	int a = MAX; //替换之后就变成int a  = 1000;; 
//	return 0;
//}

//#define PRINT(format,x) printf("the value of " #x " is "format"\n",x);
//int main()
//{
//	int a = 0;
//	//printf("the value of a is %d\n",a);
//	PRINT("%d",a);
//	int b = 20;
//	//printf("the value of a is %d\n", b);
//	PRINT("%d",b);
//
//	float f = 3.14f;
//	PRINT("%f",f);
//	//printf("the value of" "f" " is" "%f" "\n", f);
//		return 0;
//}

//#define CAT(x,y) x##y
//int main()
//{
//	int Class108 = 2023;
//	printf("%d\n", CAT(Class, 108));
//
//	return  0;
//}

//int main()
//{
//	int a = 10;
//	int b = a + 1;// b = 11 a = 10
//	int c = ++a; //c = 11 a = 11   //我们说这行代码是有副作用的，不仅影响了c 还通知影响了a的值
//
//	int ch = getchar();//它会返回一个字符，同时也会让缓存区少一个字符
//
//
//	return 0;
//}
//#include<stdlib.h>
//
//
//#define  MALLOC(num ,type) (type*)malloc(num*sizeof(type))
//int main()
//{
//	int* p = (int*)malloc (10 * sizeof(int));
//	int* ptr = MALLOC(10, int);
//	//替换后就会变成 int *ptr  = （int*) malloc(10*sizeof(int));
//
//	return 0;
//}]

//#define MAX 100
//
//int main()
//{
//	printf("%d", MAX);
//#undef  MAX
//	printf("%d", MAX);
//	return 0;
//}

//#define PRINT
//int main()
//{
//#ifdef PRINT
//	printf("hehhe\n");
//#endif
//
//	return 0;
//}
//
//int main()
//{
//#if 0
//	printf("hehhe\n");
//#endif
//
//	return 0;
//}


#define M 3
int main()
{
#if M==1
	printf("haha\n");
#elif M == 5
	printf("hehe\n");
#else
	printf("heihei\n");
#endif
	return 0;
}